// /**
//  * @param {number[]} nums
//  * @return {number}
//  */
// var majorityElement = function (nums) {
//   let map = {}
//   for (let i = 0; i < nums.length; i++) {
//     if (!map[nums[i]]) {
//       map[nums[i]] = 1
//     }
//     map[nums[i]]++
//   }
//   let maxCount = 0
//   let res = null
//   for (let i in map) {
//     if (map[i] > maxCount) {
//       res = i
//       maxCount = map[i]
//     }
//   }
//   return res
// }

// /**
//  * @param {number[]} nums
//  * @return {number}
//  */
//  var majorityElement = function(nums) {
//   nums.sort((a,b)=>a-b)
//   return nums[Math.floor(nums.length/2)]
// };

/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function (nums) {
  let count = 1
  let res = nums[0]

  for (let i = 1; i < nums.length; i++) {
    if (res === nums[i]) {
      count++
    } else {
      count--
      if (count === -1) {
        res = nums[i]
        count = 1
      }
    }
  }
  return res
}
